home *** CD-ROM | disk | FTP | other *** search
Wrap
THEE COMPLEAT ANSI COLOR/ANIMATION/MUSIC MANUAL FOR YOUR AMIGA or IBM-Compatible Computer [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] Before we get to specific ways to send control codes to the ANSI/Amigados driver, you must first know what those codes mean. For the function keys the codes are listed on the chart below. ============================================================================== FUNCTION KEY REASSIGNMENT WITH ANSI (Does NOT work on AMIGA!) ------------------------------------------------------------------------------ Each function key is assigned an "extended function code" which DOS will use to recognize that a function key has been pressed and in what shifted mode, if any. Each number is expressed as a 0 followed by a semi-colon, then the number from the chart below. KEY NORMAL SHIFT CONTROL ALT F1 59 84 94 104 F2 60 85 95 105 F3 61 86 96 106 F4 62 87 97 107 F5 63 88 98 108 F6 64 89 99 109 F7 65 90 100 110 F8 66 91 101 111 F9 67 92 102 112 F10 68 93 103 113 Accordingly, the way to designate the F5 key would be 0;63 while the F10 key would be designated by 0;68 or 0;113 if shifted with the ALT key. ============================================================================ KEYBOARD REASSIGNMENT WITH ANSI (Does not work on AMIGA!) ---------------------------------------------------------------------------- If you examine the DOS Technical Reference Manual (not the Technical Manual for PC hardware), you will find a section on SCREEN/KEYS. This section was contained in the DOS 2.0 documentation, but IBM removed it in later editions. Here is a summary of its contents relative to keyboard redefinition. To change one key to have the meaning of another, enter: ESC [#;#p where the first # is the ASCII value of the key being changed and the second # is the ASCII value of the new definition. For example, "A" has the ASCII value of 65 and "Q" has the value of 81. So: ESC [65;81p will result in "A" being redefined as "Q." It is also possible to redefine a key to have the meaning of a string of characters. This is done by enclosing the string in quotes. So: ESC [65;"Hi there"p would change the "A" key to have the meaning of "Hi there." If the first value for the first # is a 0 however, DOS knows that what is being changed is not an ASCII value but the meaning of an extended function code. So if you were to enter: ESC [0;68;"Hi there"p DOS would know to change the meaning of the function key (in this case F10) to the sting enclosed in quotes. This is the key to redefining your function keys to perform much used commands: like DIR, CHKDSK, COPY *.* B: etc. or to load programs from disk. There is a final trick here. If you end the escape command sequence with the characters ";13p" instead of just "p" the command will self-execute, just as if you pressed the [enter] key. The IBM documentation tells the user to preface each command by an ESC command, and I have represented this in the above paragraphs by writing the characters "ESC." at the start of each control code sequence mentioned. Most users assume that this means to press the ESC key on the keyboard when entering the commands. Not so. To get the Escape Sequence to the ANSI driver you must enter it using a prompt command or write a .COM file. For example to configure the F1 key (extended function code 59) to have the meaning in DOS of "autoexec" with an [enter] command at the end of it you cannot type: ESC [0;59;"autoexec";13p as the ESC will not be recognized by DOS as an escape sequence. What DOS will recognize as an escape sequence is the characters "$e" although this surely looks strange at first. Users familiar with the PROMPT command will notice that the "$" character is what the PROMPT command uses as an escape sequence, and that is precisely how we will get the redefinition to be recognized by DOS. If you enter the following command: PROMPT $e[0;59;"autoexec";13p you will see that it works perfectly. You now have the secret to redefining the function keys in DOS. Simply write and run a batch file with a list of PROMPT commands and you will have done it. One precaution, ECHO must be ON, otherwise DOS will suppress the PROMPT command and the escape sequences will not get through. As an example, let's create a batch file called KEYON.BAT that will set F1 as EDITOR [enter], F2 as PC-FILE [enter], F3 as PC-CALC [enter], F4 as PC-GRAPH [enter], F5 as PC-TALK [enter], F6 as PC-WRITE [enter], F7 as BASICA [enter], F8 as DIR without the [enter], F9 to run a batch file called MENUOFF.BAT [enter] and F10 to run a batch file called MENUON.BAT [enter]. It would be as follows: echo on PROMPT $e[0;59;"EDITOR";13p PROMPT $e[0;60;"PC-FILE";13p PROMPT $e[0;61;"PC-CALC";13p PROMPT $e[0;62;"PC-GRAPH";13p PROMPT $e[0;63;"PC-TALK";13p PROMPT $e[0;64;"PC-WRITE";13p PROMPT $e[0;65;"BASICA";13p PROMPT $e[0;66;"DIR"p PROMPT $e[0;67;"MENUOFF";13p PROMPT $e[0;68;"MENUON";13p prompt cls You would also want to create another file called KEYOFF.BAT which resets the function key definitions to DOS normal. The format would be: echo on PROMPT $e[0;59;0;59p PROMPT $e[0;60;0;60p PROMPT $e[0;61;0;61p PROMPT $e[0;62;0;62p PROMPT $e[0;63;0;63p PROMPT $e[0;64;0;64p PROMPT $e[0;65;0;65p PROMPT $e[0;66;0;66p PROMPT $e[0;67;0;67p PROMPT $e[0;68;0;68p prompt cls I should mention that the purpose of the final blank PROMPT command in each of these batch files is to reset the DOS prompt to A> or whatever your default prompt is. It serves no redefinition purpose, but does keep the screen looking clean. ============================================================================ CURSOR POSITIONING / MOVEMENT ---------------------------------------------------------------------------- To move the cursor to a specified position: ESC [#;#h where the first # is the desired line number and the second the desire column. To move the cursor up without changing columns: ESC [#a where # specifies the number of lines moved. To move the cursor to a specified horizontal and vertical position: ESC [#;#f where # means first the line number and secondly the column number. To get a cursor position report: ESC [#;#r where the first # specifies the current line and the second # specifies the current column To move the cursor down: ESC [#b where # specifies the number of lines moved down. To move the cursor forward: ESC [#C where # specifies the number of columns moved. To move the cursor backward: ESC [#d where # specifies the number of columns moved. To save the cursor position: ESC [s and to restore it: ESC [u. ========================================================================= ERASING SCREEN (CLS) AND ERASING A LINE ------------------------------------------------------------------------- To do a CLS (erase screen move cursor to home position): ESC [2j To erase from cursor to end of line: ESC [k ============================================================================= DEVICE STATUS REPORT (Does NOT appear to work on AMIGA) ----------------------------------------------------------------------------- To get a device status report: ESC [6n ============================================================================= ANSI COLOR GRAPHICS ----------------------------------------------------------------------------- To set the color/graphics attributes, enter ESC [#;#m where the first # is the desired foreground color and the second is the desired background color. Select colors from the list below: (NOTE: Following amiga colors were with preferences settings of blue, black, orange and white default colors.) --------------------------------------------------------------------------- CODE US ANSI STANDARDS RESULT CODE AMIGA ANSI RESULT ======================================================================= 30 black foreground----------------- 30 Blue foreground (text) 31 red foreground------------------- 31 White foreground (text) 32 green foreground---------------- 32 Black foreground (text) 33 yellow foreground--------------- 33 Orange foreground (text) 34 blue foreground----------------- 34 Blue foreground (text) 35 magenta foreground-------------- 35 White Forground (text) 36 cyan foreground----------------- 36 Black foreground (text) 37 white foreground---------------- 37 Orange foreground (text) 38 Unknown------------------------- 38 Unknown 39 Unknown------------------------- 39 Unknown ---------------------------------------------------------------------------- 40 black background---------------- 40 Blue background 41 red background------------------ 41 White Background 42 green background---------------- 42 Black background 43 yellow background--------------- 43 Orange background 44 blue background----------------- 44 Blue background 45 magenta background-------------- 45 White background 46 cyan background----------------- 46 Black Background 47 white background---------------- 47 Orange background 48 Unknown------------------------- 48 Unknown 49 Unknown------------------------- 49 Unknown NOTE: Please note that for both the foreground and background sections, the colors repeat after each four codes; ie: Blue text = 30 or 34; Blue background= 40 or 44.. Also, as long as you know the escape code for the foreground color, the same color for background will be 10 numbers higher. This is true for both the IBM and Amiga. ============================================================================= -- ADDITIONAL ANSI ATTRIBUTES -- ----------------------------------------------------------------------------- To set additional attributes enter: ESC [#m where # is the number of the desired attribute. Select attributes from the list below: 0 all attributes off (defaults to original Preferences settings) IBM ESCAPE CODE AMIGA RESULT --------------------------------------------------------------- 0 All ansi attributes off 0 All ansi attributes off 1 bold on 1 BOLD ON 2 Unknown 2 Turns text black 3 Italics on 3 Italics on 4 underscore 4 underscore 5 blink 5 does NOT work on amiga 6 Unknown 6 Unknown 7 reverse video 7 Reverse video 8 invisible 8 Invisible --------------------------------------------------------------------------- IBM EXAMPLES FOR USE OF ANSI ATTRIBUTE CODES To give an example of what can be done with these additional codes, a batch file called MENUOFF.BAT containing only the line: PROMPT $e[2J$e[30;40m$h would blank a color display completely. It does a CLS, sets the display to a black foreground and background and the with the "$h" performs a backspace to erase the blinking cursor (the "$h command is documented in the DOS manual under PROMPT). Another batch file called MENUON.BAT containing the lines: PROMPT $e[0m prompt cls Would reset a color display to restore the screen after MENUOFF.BAT had been run. ========================================================================= USING DEBUG TO LOAD THE ANSI DRIVER (APPLICABLE ONLY TO IBM) ------------------------------------------------------------------------- While there is no reason why we could not continue to configure our function keys by batch files consisting of lists of PROMPT commands, this is a clumsy way to proceed. It is easier to use the DEBUG utility supplied with DOS to create a .COM file that will do the job for us quickly and directly, without sending any input to screen. Place a formatted DOS disk containing the DEBUG utility in the default drive, and follow the script below. As you do so hexadecimal numbers will appear on the left hand side of your screen. These numbers will vary depending on the configuration of your system. For our purposes here I will represent the numbers in the form xxxx:nnnn. What you will see on your screen will be different. A>DEBUG [enter] -A 100 [enter] MOV AH,9 [enter] MOV DX,109 [enter] INT 21 [enter] INT 20 [enter] xxxx:nnnn DB 1B'[0;59;"EDITOR";13p' [enter] xxxx:nnnn DB 1B'[0;60;"PC-FILE";13p' [enter] xxxx:nnnn DB 1B'[0;61;"PC-CALC";13p' [enter] xxxx:nnnn DB 1B'[0;62;"PC-GRAPH";13p' [enter] xxxx:nnnn DB 1B'[0;63;"PC-TALK";13p' [enter] xxxx:nnnn DB 1B'[0;64;"PC-WRITE";13p' [enter] xxxx:nnnn DB 1B'[0;65;"BASICA";13p' [enter] xxxx:nnnn DB 1B'[0;66;"DIR"p' [enter] xxxx:nnnn DB 1B'[0;67;"MENUOFF";13p' [enter] xxxx:nnnn DB 1B'[0;68;"MENUON";13p' [enter] xxxx:nnnn DB 1B '$' [enter] As soon as you have entered the previous line, your computer will respond with a number in the form of xxxx:nnnn. Copy down the portion of the number that is being represented here as "nnnn" as you will need it later. Once you have copied the number down, press [enter] xxxx:nnnn [enter] -N KEYON.COM [enter] -R BX [enter] When you have entered the command above, your computer will respond with the following line and a colon as a prompt. At this prompt enter 0 and press [enter]. BX:0000 :0 [enter] -R CX [enter] When you enter the R CX command above, the computer will respond with the following line and a colon as a prompt. At this prompt enter the number, "nnnn" you copied down above and press [enter]. CX 0000 :nnnn [enter] -W [enter] The computer will respond with the following. WRITING nnnn bytes -Q [enter] As soon as you enter the Q command (for Quit) you will be back at the DOS prompt, and there will be a new file on disk called KEYON.COM. Simply type it at the DOS prompt and your function keys will be configured. It is a good idea to use this same procedure to write another .COM file called KEYOFF.COM which will restore the keys to their native DOS definitions. The procedure for this is the same as the above, except that the definition section should be: xxxx:nnnn DB 1B'[0;59;0;59p' [enter] xxxx:nnnn DB 1B'[0;60;0;60p' [enter] xxxx:nnnn DB 1B'[0;61;0;61p' [enter] xxxx:nnnn DB 1B'[0;62;0;62p' [enter] xxxx:nnnn DB 1B'[0;63;0;63p' [enter] xxxx:nnnn DB 1B'[0;64;0;64p' [enter] xxxx:nnnn DB 1B'[0;65;0;65p' [enter] xxxx:nnnn DB 1B'[0;66;0;66p' [enter] xxxx:nnnn DB 1B'[0;67;0;67p' [enter] xxxx:nnnn DB 1B'[0;68;0;68p' [enter] xxxx:nnnn DB 1B '$' [enter] If you find that KEYON.COM doesn't work correctly, reboot the machine to clear the definitions and try again. The most common mistakes are typing errors (I often enter a colon when I wanted a semi-colon). Another source of difficulty will arise if you have another file on disk to start with called KEYON.COM or KEYOFF.COM. DEBUG bypasses the normal file allocation of DOS and writes directly to the disk. If you have another file on disk with the same name, DEBUG will overwrite it, but unless the other file was exactly the same size as the new one or smaller, there may be a piece of the old file left over attached to the end of the new one. As a precaution, always erase old versions of the .COM files, or better yet give each one a unique name and rename it later using the DOS Rename command. ============================================================================= USING ANSI ON AMIGA WITH BBS-PC! SOFTWARE ----------------------------------------------------------------------------- This article is from the November, 1986 issue (#2) of AMIGAZINE! THIS ARTICLE IS COPYRIGHT (C) 1986 DIGITAL PUBLISHING, AND BRIAN JEAN. ALL RIGHTS RESERVED. DISTRIBUTION RIGHTS GRANTED TO GENIE AND DELPHI. Creating Custom Color Menus For BBS-PC! (Using ANSI Escape Sequences) By Brian Jean Running a BBS (Bulletin Board Service) can be a lot of fun, and a lot of work. SYSOPs (SYStem OPerators) are forever trying to make their BBS look different from the BBS next door, even though they may be running the same software. ANSI escape sequences are one such way of making your BBS look different from all the others. In the example I am about to give, BBS-PC! software is being used. Although the syntax may differ a bit, the concept should work the same for those of you running a BBS on other than BBS-PC!. BBS-PC! allows the SYSOP to customize his menus. It is through this customization process that we are allowed to insert our ANSI escape sequences to add color and cursor control to our menus. Before we can get into the meat of things, you must first understand how BBS-PC! allows you to add "ASCII CHARACTER GRAPHICS" to your menus. Although we will not actually be adding ASCII CHARACTER GRAPHICS, the technique we will be using is the same. The syntax is simple. Within your menu, place a backslash (\) followed by a number, which is the ASCII value for the character you want inserted into your menu. For example, let's say you want to actually add a backslash to your menu. You can not simply type in a backslash because BBS-PC! will see it and view it as a special character telling the menu compiler that an ASCII value will follow. Therefore, the syntax would be: \92 | | Tells the menu compiler an -----+ +----- The ASCII value ASCII value will follow for a backslash (\) That's it. Real simple. So, if you wanted part of your menu to look like this: +---------------------------------+ | R:Read Messages D:Down Loads | | | | \:Page SYSOP G:Good-bye | | | The actual syntax in your menu (prior to compiling) would be: +---------------------------------+ | R:Read Messages D:Down Loads | | | | \92:Page SYSOP G:Good-bye | | | Now that you have the general idea, let's get to work on a real menu. Adding the color and cursor control is easy. We'll be using the backslash followed by an ANSI escape sequence. The two sequences we will be using are: ESC[xM and ESC[r,cH Where ESC = ESCape (ASCII 27) [ = "[" x = Color Code M = "M" r = Row # c = Column # H = "H" The first sequence adds color and the second places the cursor at a specified ROW and COLUMN. The following is a modified version of the actual Main Menu as I have it set up on my BBS. Because of the screen width limitation here for this demonstartion, some of the menu has been extracted to make room for the most important part. The very first part of each line, which reads TITLE =, has been eliminated, along with some of the filler characters such as several of the "-" characters in the border. See your BBS-PC! manual for the proper syntax of menus as required by your menu compiler. menu = BBS-0.MEN, "\13\13\13Main Func (? for menu): ", 1, 2 \12 \13 \13 \27[33m+-------------------------------------------MAIN MENU-+" | Message Commands |" | ---------------- |" | Scan Message E-Mail Read Messages |" | Leave Message Price List Comment to SYSOPm|" | |" | System Commands |" | --------------- |" | Good-bye Caller log Time on System |" | Section mask Expert Change Options |" | Your Stats. 40 Column Page SYSOP |" | Bulletins/Help Display File U/Dload |" | \27[0m !: Turn Off ANSI |" +---------------------------------------------------------+ \27[0m" title = "\27[0m \27[6;12H S: \27[6;32H E: \27[6;48H R:" title = "\27[7;12H L: \27[7;32H P: \27[7;48H C:" title = "\27[11;12H G: \27[11;32H U: \27[11;48H T:" title = "\27[12;12H M: \27[12;32H X: \27[12;48H O:" title = "\27[3;30H \7 THE AMIGA PROJECT! " title = "\27[13;12H Y: \27[13;32H +: \27[13;48H /:" title = "\27[14;12H B: \27[14;48H F:" This is how the menu looks to the user when he or she calls in: +------------------ THE AMIGA PROJECT! ---------MAIN MENU-+ | Message Commands | | ---------------- | | S: Scan Message E: E-Mail R: Read Messages | | L: Leave Message P: Price List C: Comment to SYSOP | | | | System Commands | | --------------- | | G: Good-bye U: Caller log T: Time on System | | S: Section mask X: Expert O: Change Options | | Y: Your Stats. +: 40 Column /: Page SYSOP | | B: Bulletins/Help Display F: File U/Dload | | !: Turn Off ANSI | +---------------------------------------------------------+ Main Func (? for menu): Now for a line by line description of what we just did. menu = BBS-0.MEN, "\13\13\13Main Func (? for menu): ", 1, 2 The very first line defines the name of the menu and the prompt used. The only thing new here from the standard menu is the three "\13"'s. This sends three ASCII 13's (RETURN's) to the user. This is VERY important in the menu as I have it set up. Without it, your menu prompt will pop up somewhere in the middle of the screen. \12 \13 \13 \27[33m+-------------------------------------------MAIN MENU-+" The next line is where the fun begins. the "\12" sends an ASCII 12, which is more commonly know as a screen clear. This will clear your user's screen to ensure proper menu positioning. If the system your user is using does not recognize ASCII 12 as a screen clear, then this menu will look like a mess to him. I'll explain later what to do if this happens. After the \12, comes two\13's. This again, sends two more RETURN's to the user. This just places the menu two lines down from the top of the menu. \27[33m is the first color sequence. This turns the character color to RED. Everything following will show up on the callers screen as color. I said 33 is RED, but RED is not what is always seen. The actual color seen will depend on what the user has his or her colors set to in preferences. The SYSOP will see YELLOW in his menu. This is due to the color definitions used in BBS-PC!. I haven't found a way to change this. The remainder of the menu is then sent in RED, until it comes to this line. | \27[0m !: Turn Off ANSI |" The \27[0m turns off ALL ANSI escape sequences which are now active. In other words, the character color received by the caller will return to white, or what ever color that user has set his or her white to in preferences. The reason I did this in this line, is because my default menu uses the ANSI sequences. A user who is calling with a terminal that can not accept ANSI sequences will see a mess for a menu the first time through. The comand to turn off the ANSI is then clearly visible. As I am sure you have noticed, what we have actually done here, is display the menu descriptions, but not the actual commands. A user sees a menu that says SCAN MESSAGES E-MAIL PAGE SYSOP etc ..., but the user doesn't know what key to press to activate that command. Here's where the real fun begins. The following sequences cause the cursor to jump around the screen filling in the actual commands. This can make for a real interesting menu. Here's the sequences that actually do that. title = "\27[0m \27[6;3H S: \27[6;23H E: \27[6;39H R:" The first sequence (\27[0m) turns off all ANSI as it did before, this causes the actual commands to pop onto the screen in a color different from the rest of the menu. The next sequence \27[6;3H S: sends the cursor to row 6, column 3 and prints S: the command for Scan Messages. \27[6;23H E: sends the cursor to row 6, column 23 and prints E:, then command for E-Mail. As you can now see, we are filling in the menu. You should have little or no trouble figuring out what the remainder of the sequences do. They all go to a specified row and column and print a command. title = "\27[3;21H \7 THE AMIGA PROJECT! " This one sends the cursor to row 3, column 21 and sends an ASCII 7, better known as CONTROL-G or a bell, followed by the name of my BBS, THE AMIGA PROJECT! That's it. That's all there is to it. The way I have my BBS set up, when a user selects the ! command (Turn OFF ANSI), it sends the user to another menu set which does not utilize the ANSI escape sequences. I also have two menus set up for the AMIGA in my terminal definitions. One is called AMIGA! and the other is called AMIGA! *ANSI*. Obviously, one uses the ANSI escape sequences and the other does not. This allows each user to decide for himself if he does or does not want the fancy color and screen display. There are a lot more ANSI sequences available. Get you hands on an ANSI table and see what variations you can come up with for menu display. A few quick examples of more ANSI sequences are: ESC[nC where n = a number. The cursor is then moved right that number of lines without changing rows. ESC[nD where n = a number. The cursor is then moved left that number of lines without changing rows. ESC[K where K = the letter "K". Erases the curent line from the cursor position to the end. Most of the popular public domain terminal programs accept the ANSI escape sequences. Some, such as OnLine!, allow the user to choose between several terminal types, one of which is ANSI. The user MUST be set to ANSI or the screen will be a mess on his end. If you want to take a quick look at what this demonstration really looks like, feel free to set your terminal to ANSI, and give my BBS a call. You can reach us at 300/1200 baud, 24 hrs, (805) 834-9383. ============================================================================= RBBS-PC SYSOP ANSI.SYS COLOR HELP Adding Ansi Color and MUSIC to your WELCOMEG File NOTE: MUSIC codes do not appear to work on AMIGA ------------------------------------------------------------------------------ In order for a Caller to receive color and music from an RBBS, the Caller needs to have the statement: DEVICE=ANSI.SYS in the CONFIG.SYS file (and reboot system), or PC-TALK with ANSI.MRG applied (merged), plus DOS 2.x operating system. The SYSOP needs to run RBBS-PC version CPC12.2A (or later), and have the appropriate Escape codes in the WELCOMEG file. Please read chapter 13 of the DOS 2.0 Manual for a very brief summary of escape codes. The Escape codes will allow you to issue special character sequences to the Caller which will permit screen formatting, color graphics and music to be executed for the Caller. The Escape Code is ASCII 027 and Hex 1B and cannot be issued within EDLIN or DOS. The normal procedure is to use a dummy variable to represent the Esc code and then go into DEBUG and replace the dummy variable with Hex 1B. However, Volkswriter, Volkswriter Delux and PC-WRITE (freeware) issue a true ESC code when the ESC key is depressed. If you have access to one of these word processing programs, you can set up your graphics first, then go into the word processing program and insert the ESC codes to enable color graphics and music. However, appended to this help file is a program known as SGR.TXT (or CLR.TXT) which contains true ESC codes which can be copied over to your WELCOMEG file using the Transfer function of EDLIN (if last line in your file is 99, then issue: 100TANSICLR.HLP and you will append this file to the end of your WELCOMEG file. Then copy and delete as appropriate to move the ESC codes to where they are needed. BEGINNING OF YOUR FILE: All ANSI color/music/format statements have the format: nn;nn;x where nn is a valid number and x is an alpha operand. set attributes off (0) bold on (1) white f/g (37) and blue background (44) At the beginning of your file you will want a format command to start the text in the middle of the screen so the Caller will have time to read it as it scrolls upward. 1;f The first 0 turns off any attributes the caller has set on his/her own system before calling your RBBS. The second statement starts text at line 17 column 1 and the "f" operand is for format. Your second line should specify the color, with bold (highlight) on or off and blinking (05) on or off: ;37;44;M "1" turns bold on; "37" white foreground; "44" blue background; "m" designates Set Graphics Rendition mode Now, if you do nothing else, the callers screen will start on the 17th line in the first column, and will stay bold white letters on a blue background. The text/graphics will scroll normally from the 17th line and the color will not change until the caller signs off. j inserted at the end of the first 23 lines of graphics on line 24, will return to white on black and erase the screen and place the curser on the home position. inserted on line 25 will turn green foreground and black (default) background on, until the next ESC code is read. bold is now off and blinking is off (due to the 0; cmd) turns bold on and green f/g with (default) black b/g. You can insert ESC codes inside graphic frames to change the color of the lettering inside the frame, leaving the frame a different color: Do not forget to add ^[00m as the last attribut so as to return the callers screen to his own default settings. Please notice that the ESC codes are INSERTED and place the vertical bars out of alignment, even though they will display correctly (try TYPE ANSICLR.HLP to see display if you have ANSI.SYS in your CONFIG.SYS). For this reason, we recommend constructing your graphics first, and then insert the ESC codes using PC-WRITE or Volkswriter, or some other personal editor like EDLIN. FORMATTING The ESC[[xx;yy;F command will format the screen where xx is column number and yy is line number. You can either start the screen at column x and line y and then let it scroll normally, or you can continue to format the screen, by subsequent ESC[[xx;yy;F commands telling the cursor where to start printing the line of text which follows the format statement. After the last format statement, the text will continue to scroll normally. Just remember if you continue formatting you will have less control over where the page breaks will fall, but trial and error will get you through. MUSIC Music works just like the BASIC PLAY statement, except the Music Background statement will not work in RBBS-PC. The format is: MFO.............................................. will play music in foreground (MFO is letter O not zero). The MFO statement is required only for the first line of each song, and each line of the song can terminate with the ESC N. The letter O in MFO sets the current octave (from 0 to 6) for the following notes. Instead of MFO you can use MSO for staccato or MST150 for Staccato Tempo 150 (tempo default is 120 quarter notes in a minute). You may want to create your music using BLUESBOX.BAS and then append the resulting music and copy it to the correct line number and insert the ESC codes required. CLOSING YOUR FILE You should close your file with an ESC[[0 to turn off the colors, highlighting and flashing or it will continue on the Callers screen throughout the session. If you wish to leave color on, remember Callers will be using monochrome screens and some colors are almost unreadable on monochrome, which defeats the purpose of having a Bulletin Board System. We recommend leaving green on black, yellow on black or white on blue: (For IBM systems) Bold on; yellow f/g; black b/g Bold on; green f/g; black b/g Bold on; white f/g; blue b/g